package com.hzw.saas.api.rss;

import java.util.List;
import java.util.Map;

import com.hzw.saas.api.rss.bo.JournalCustomBO;
import com.hzw.saas.api.rss.bo.JournalUserActionBO;
import com.hzw.saas.api.rss.bo.JournalUserAxisBO;

/**
 * <p>
 * 期刊相关的用户记录 服务类
 * </p>
 *
 * @author sonam
 * @since 2021-06-30
 */
public interface IJournalUserActionService {

    /**
     * 主键查询
     * @param pid
     * @return
     */
    JournalUserActionBO getById(String pid);

    /**
     * 通用的检索
     * @param journalUserActionBO
     * @return
     */
    List<JournalUserActionBO> query(JournalUserActionBO journalUserActionBO);

    /**
     * 获取一个数据
     * @param journalUserActionBO
     * @return
     */
    JournalUserActionBO getOne(JournalUserActionBO journalUserActionBO);

    /**
     * 通用的更新接
     * @param journalUserActionBO
     */
    void update(JournalUserActionBO journalUserActionBO);

    /**
     * 通用的删除
     * @param journalUserActionBO
     */
    void delete(JournalUserActionBO journalUserActionBO);

    /**
     * 通过主键删除
     * @param pid
     */
    void delete(String pid);

    /**
     * 根据用户id查询已收藏的
     * @param userId
     * @return
     */
    List<JournalUserActionBO> findFavJournalUserActionByUserId(String userId);

    List<JournalUserActionBO> findAllJournalUserActionByUserId(String userId);

    void saveBatch(List<JournalUserActionBO> journalUserActionBOS);

    void updateBatch(List<JournalUserActionBO> journalArticleBOS);

    /**
     * 判断RSS期刊是否被收藏
     * @param articleId
     * @param userId
     * @return 1|收藏,0|未收藏
     */
    Integer journalArticleIsFav(String articleId, String userId);

    /**
     * 修改阅读状态
     * @param articleId
     * @param userId
     */
    Integer changeReadStatus(String articleId, String userId);

    /**
     * 查询没有阅读的
     * @param rssId
     * @param userId
     * @return
     */
    Map<String,Integer> findUnRead(List<JournalCustomBO> journalCustomBOS, String userId,   List<JournalUserAxisBO> userAxisBOS);

    /**
     * 全部已读
     * @param userId
     * @param journalId
     */
    Integer setAllRead(String userId, List<String> journalId);

    /**
     *
     * @param collect1
     * @param userId
     * @return
     */
    List<JournalUserActionBO> findByUserAndArticleIds(List<String> collect1, String userId);

    List<String> findByUserAndRssId(String pid, String userId);

    void deleteBatchByIds(List<String> byUserAndRssid);

    /**
     * 根据用户id和公共站点id删除文章
     * @param userId
     * @param pids
     */
    void deleteByUserAndJournalIdS(String userId, List<String> pids);
}
